package CutLoad.mc
{
	import flash.display.DisplayObject;
	import flash.display.Stage;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	/**
	 * 场景元素对齐管理,注：所有元素注册点必为左上方
	 * @author smallerbird mail:smallerbird@gmail.com  site:www.mkigm.com QQ群:49983196
	 * 
	 */
	public class StageAlignManagement
	{
		private var arr:Array,myStage:Stage;
		/**
		 * 
		 * @param myStage stage对象
		 * @param isAddStageSizeEvent 是否
		 * 
		 */		
		public function StageAlignManagement(myStage:Stage,isAddStageSizeEvent:Boolean=true):void
		{
			myStage.scaleMode=StageScaleMode.NO_SCALE;
			myStage.align=StageAlign.TOP_LEFT;
			
			this.myStage=myStage;
			//八个方向
			arr=new Array();
			for(var i:Number=0;i<9;i++){
				arr.push(new Array);
			}
			
			if(isAddStageSizeEvent) myStage.addEventListener(Event.RESIZE,resize);
		}
		/**
		 * 添加对齐方式 
		 * @param target 要设置的对齐的元素
		 * @param alignType 对齐种类 alignType的值可设为:0居中,1左上,2上中,3右上,4右中,5右下,6下中,7左下,8左中
		 * @param w 用于计算该元素的宽 ，默认为0，当为0时，自动取该元素的width
		 * @param h 用于计算该元素的高 ，默认为0，当为0时，自动取该元素的height
		 * @param isRefresh 是否刷新页面。注：如果一次添加很多。前面的添加的几个可以设置false,最后一个设为true,可以提高一上效能
		 * 
		 */		
		public function add(target:DisplayObject,alignType:Number=0,w:Number=0,h:Number=0,isRefresh:Boolean=true):void{
			var arrTem:Array=arr[alignType];
			if(w==0) w=target.width;
			if(h==0) h=target.height;
			arrTem.push({target:target,w:w,h:h});
			if(isRefresh) reSizeUpDate()
		}
		private function resize(e:Event):void{
			reSizeUpDate()
		}
		/**
		 * 刷新画面 
		 * 
		 */		
		public function reSizeUpDate():void{
			var sw:Number=myStage.stageWidth;
			var sh:Number=myStage.stageHeight;
			for(var i:Number=0;i<arr.length;i++){
				var arrTem:Array=arr[i];
				for(var j:Number=0;j<arrTem.length;j++){
					//------------------------
					var obj:Object=arrTem[j];
					var target:DisplayObject=obj.target;
					var ww:Number=obj.w;
					var hh:Number=obj.h;
					//对齐
					switch(i){
						case 0:
							//居中
							target.x=(sw-ww)/2;
							target.y=(sh-hh)/2;
							break;
						case 1:
							//左上
							target.x=0;
							target.y=0;
							break;
						case 2:
							//上中
							target.x=(sw-ww)/2;
							target.y=0;
							break;
						case 3:
							//右上
							target.x=(sw-ww)
							target.y=0;
							break;
						case 4:
							//右中
							target.x=(sw-ww)
							target.y=(sh-hh)/2;
							break;
						case 5:
							//右下
							target.x=(sw-ww)
							target.y=(sh-hh)
							break;
						case 6:
							//下中
							target.x=(sw-ww)/2
							target.y=(sh-hh)
							break;
						case 7:
							//左下
							target.x=0
							target.y=(sh-hh)
							break;
						case 8:
							//左中
							target.x=0
							target.y=(sh-hh)/2
							break;
					}
					//------------------------
				}
			}	
		}
		
		
	}
}